/*
 * Copyright 2013 MovingBlocks
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.terasology.persistence.typeHandling;

import gnu.trove.list.TDoubleList;
import gnu.trove.list.TFloatList;
import gnu.trove.list.TIntList;
import gnu.trove.list.TLongList;

import java.util.List;

/**
 */
public interface PersistedDataArray extends PersistedData, Iterable<PersistedData> {

    int size();

    PersistedData getArrayItem(int index);

    boolean isNumberArray();

    boolean isBooleanArray();

    boolean isStringArray();

    List<String> getAsStringArray();

    TDoubleList getAsDoubleArray();

    TFloatList getAsFloatArray();

    TIntList getAsIntegerArray();

    TLongList getAsLongArray();

    boolean[] getAsBooleanArray();

    List<PersistedData> getAsValueArray();

}
